using System;
using System.Text;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using BE;

namespace DA
{
    public class PerfilDA
    {
        #region Metodos Publicos
        public static void InsertarPerfil(Perfil oPerfil)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("InsertarPerfil");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64 , oPerfil.PerfilId);
            sqlClient.AddInParameter(dbCmd, "@Nombre", DbType.String, oPerfil.Nombres);
            sqlClient.AddInParameter(dbCmd, "@Descripcion", DbType.String, oPerfil.Descripcion);
            sqlClient.AddInParameter(dbCmd, "@LogUsuarioId", DbType.Int32, oPerfil.LogUsuarioId);
            sqlClient.ExecuteNonQuery(dbCmd);
        }
        public static Int32 EliminarPerfil(long uidPerfilId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("EliminarPerfil");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64, uidPerfilId);

            return Convert.ToInt32(sqlClient.ExecuteScalar(dbCmd));
        }
        public static DataTable ObtenerPerfiles(String strNombre)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ObtenerPerfiles");
            sqlClient.AddInParameter(dbCmd, "@Nombre", DbType.String, strNombre);
            return sqlClient.ExecuteDataSet(dbCmd).Tables[0];
        }
        public static DataSet ObtenerMenuXPerfilId(long uidPerfilId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ObtenerMenuXPerfilId");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64, uidPerfilId);
            return sqlClient.ExecuteDataSet(dbCmd);
        }
        public static DataTable ObtenerMenuDisponibleXPerfilId(long uidPerfilId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ObtenerMenuDisponibleXPerfilId");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64, uidPerfilId);
            return sqlClient.ExecuteDataSet(dbCmd).Tables[0];
        }
        public static void InsertarPerfilUsuario(long uidPerfilId,long uidMenuId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("InsertarPerfilUsuario");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64, uidPerfilId);
            sqlClient.AddInParameter(dbCmd, "@MenuId", DbType.Int64, uidMenuId);

            sqlClient.ExecuteNonQuery(dbCmd);
        }
        public static void EliminarPerfilUsuario(long uidPerfilId, long uidMenuId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("EliminarPerfilUsuario");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64, uidPerfilId);
            sqlClient.AddInParameter(dbCmd, "@MenuId", DbType.Int64, uidMenuId);

            sqlClient.ExecuteNonQuery(dbCmd);
        }
        public static DataTable ObtenerMenuPrincipal(long uidPerfilId)
        {
            SqlDatabase sqlClient = new SqlDatabase(Configuracion.GetConnection);
            DbCommand dbCmd = sqlClient.GetStoredProcCommand("ObtenerMenuPrincipal");
            sqlClient.AddInParameter(dbCmd, "@PerfilId", DbType.Int64, uidPerfilId);
            return sqlClient.ExecuteDataSet(dbCmd).Tables[0];
        }
        #endregion
    }
}
